﻿// JScript File

// 下面两个函数用于客户在列表刷新前多次点击树节点时
// 如果列表还在刷新中，则保存最新点击的树节点Key
// 等列表刷新完成后再发送最后一次点击事件
// 
// 效果
// 1、过滤中间无效点击，减轻服务器负担
// 2、保证响应最后一次点击，避免树节点与列表不对应
var postponedCallbackValue = null;
function OnTreeNodeChanged( panelAjax , treeCtrl , s, e) {
    var item = treeCtrl.focusedKey;
    if(panelAjax.InCallback())
        postponedCallbackValue = item;
    else
        panelAjax.PerformCallback(item);
}
function OnTreeEndCallback(panelAjax , s, e) {
    if(postponedCallbackValue != null) {
        panelAjax.PerformCallback(postponedCallbackValue);
        postponedCallbackValue = null;
    }
}

// 用户调整列表分页风格时，发出刷新列表事件
//
// 事件参数：PagerStyle{value}
// PagerStyle : 分页风格调整标识
// value : 选中的PagerStyle的值
function PagerStyleChanged( grid , ctrl ) {
    grid.PerformCallback( "PagerStyle{"+ ctrl.options[ctrl.selectedIndex].value +"}");
}

// ExportMode : 明细表导出模式
function DetailExportModeChanged( grid , ctrl ) {
    grid.PerformCallback( "ExportMode{"+ ctrl.options[ctrl.selectedIndex].value +"}");
}

// 选择/取消选择 所有记录
function CheckAllClick ( grid , s )
{
    if(s.checked) 
        grid.SelectRows(); 
    else 
        grid.UnselectRows();
}

// 列管理工具箱，用户可以在界面控制需要显示或隐藏的列

// 显示隐藏列工具箱
function ShowHideCustomizationWindow(grid) {
     grid.ShowCustomizationWindow();        
}

// 开启关闭快速查询
function UpdateFilterRowVisibility(grid) {
    grid.PerformCallback( "FilterRowOpen" );
}

    
// 使用PureDemo提供的下拉列表联动方案
function OnParentComboChanged(mainCmb, mainType, subCmb, subType ) {
    var mainId = mainCmb.GetValue().toString();
    // 将mainId、mainType、subType通过Ajax调用，从后台获得子列表可用值
    var result = ajaxGetSubData ( mainId , mainType , subType );
    // 将结果设置到子列表中
    resultSet ( subCmb , result , false );
}

/**
 *				resultSet
 *
 * 说明: 将数据绑定到指定的
 * aDrop : 要绑定的下拉控件
 * aDatas : 返回的"name1,value1;name2,value2;..."格式字符串
 * aHasNone : 是否自动在最初位置加上“无”选项
 */		
function resultSet ( combo , aDatas , aHasNone )
{
    // 防止提供了非下拉列表的绑定
    combo.ClearItems();

    // 增加一个“无”选项
    if ( aHasNone )
    {
        combo.AddItem ( "无" , "0" );
    }
	
    // Handle "value1,name1;value2,name2;..." format strings
    var lines = aDatas.split ( ";" ) ;
    for ( var i = 0 ; i < lines.length ; i++ )
    {
	    var line = lines[i] ;
	    if ( line.length > 0 )
	    {
		    if ( line.indexOf ( "," ) != -1 )
		    {
			    var params = line.split ( "," ) ;
			    combo.AddItem ( params[1] , params[0] );
		    }
	    }
    }
}

function ajaxGetSubData ( mainId , mainType , subType )
{
    var xmlHttp = getXmlHttpRequest();
    var param = "mainId="+mainId+"&mainType="+mainType+"&subType="+subType;
    xmlHttp.open("GET", "../Ajax/ComboData.aspx?"+param, false);
    //xmlHttp.open("GET", "http://localhost:11135/WebUI/Ajax/ComboData.aspx", false);
    xmlHttp.send(null);
    return xmlHttp.responseText;
}

function getXmlHttpRequest()
{
    var xmlhttp=false;
    // JScript gives us Conditional compilation, we can cope with old IE versions.
    // and security blocked creation of the objects.
    try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
            xmlhttp = false;
        }
    }
    if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
        try {
	        xmlhttp = new XMLHttpRequest();
        } catch (e) {
	        xmlhttp=false;
        }
    }
    if (!xmlhttp && window.createRequest) {
        try {
	        xmlhttp = window.createRequest();
        } catch (e) {
	        xmlhttp=false;
        }
    }

    return xmlhttp;
}

